package com.zhu.solution.linkQuestion;


/*删除链表中的节点
请编写一个函数，用于 删除单链表中某个特定节点 。在设计函数时需要注意，你无法访问链表的头节点 head ，只能直接访问 要被删除的节点 。

题目数据保证需要删除的节点 不是末尾节点 。

示例 1：
输入：head = [4,5,1,9], node = 5
输出：[4,1,9]
解释：指定链表中值为 5 的第二个节点，那么在调用了你的函数之后，该链表应变为 4 -> 1 -> 9

示例 2：
输入：head = [4,5,1,9], node = 1
输出：[4,5,9]
解释：指定链表中值为 1 的第三个节点，那么在调用了你的函数之后，该链表应变为 4 -> 5 -> 9

示例 3：
输入：head = [1,2,3,4], node = 3
输出：[1,2,4]

示例 4：
输入：head = [0,1], node = 0
输出：[1]

示例 5：
输入：head = [-3,5,-99], node = -3
输出：[5,-99]
 

提示：
链表中节点的数目范围是 [2, 1000]
-1000 <= Node.val <= 1000
链表中每个节点的值都是唯一的
需要删除的节点 node 是 链表中的一个有效节点 ，且 不是末尾节点
*
* */
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zhujiabao
 * @Date: 2021/12/24/9:59
 * @Description:
 */
public class Solution_1 {

    public static void main(String[] args) {

        //输入的链表元素项，和要删除的节点
        int[] head = {4,5,1,9};
        int n = 5;

        //链表头节点
        ListNode listNode = new ListNode(head[0]);
        ListNode tempNode = listNode;
        //新建链表
        for (int i=1; i<head.length; i++){
            tempNode.next = new ListNode(head[i]);
            tempNode = tempNode.next;
        }

        //打印链表
        System.out.print("listNode");
        tempNode = listNode;
        while (tempNode != null){
            System.out.print(" --> " + tempNode.val);
            tempNode = tempNode.next;
        }

        //查找到节点，并删除节点
        tempNode = listNode;
        while (tempNode.val != n){
            tempNode = tempNode.next;
        }
        new Solution_1().deleteNode(tempNode);

        System.out.println();


        //再次打印链表
        System.out.print("listNode");
        tempNode = listNode;
        while (tempNode != null){
            System.out.print(" --> " + tempNode.val);
            tempNode = tempNode.next;
        }

    }

    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }


    /**
     * Definition for singly-linked list.
     */
    static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }

}



